/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.gui;

import com.camachosanchez.bean.Alineaciones;
import com.camachosanchez.bean.ComprobacionBandaRodamientoPresion;
import com.camachosanchez.bean.ControlCambioNeumatico;
import com.camachosanchez.bean.InspeccionEquipo;
import com.camachosanchez.bean.MarcasVehiculo;
import com.camachosanchez.bean.Vehiculos;
import com.camachosanchez.controler.jpa.VehiculosJpaController;
import com.camachosanchez.gui.table.RenderizadorTablaReportes;
import com.camachosanchez.gui.table.TableSorter;
import com.camachosanchez.util.Constantes;
import com.camachosanchez.util.GUIUtil;
import com.camachosanchez.util.JPAUtil;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.event.InternalFrameEvent;
import javax.swing.table.DefaultTableModel;
import net.coderazzi.filters.gui.TableFilterHeader;

/**
 *
 * @author ZULLY
 */
public class BusquedaMovimientosUnidad extends javax.swing.JInternalFrame {

    private EntityManagerFactory emf = null;
    private DefaultTableModel dmAlineaciones;
    private DefaultTableModel dmInspecciones;
    private DefaultTableModel dmMediciones;
    private DefaultTableModel dmMontajes;
    private int idVehiculo;
//    private TableFilterHeader filterHeader;

    /**
     * Creates new form BusquedaMovimientosUnidad
     */
    public BusquedaMovimientosUnidad(int idVehiculo) {
        initComponents();
        setFrameIcon(new ImageIcon(getClass().getResource("/com/camachosanchez/recursos/table.png")));
        this.emf = JPAUtil.getEntityManagerFactory();
        this.idVehiculo = idVehiculo;
        Date fechaActual = new Date();
        dateHasta.setDate(fechaActual);
        Calendar cal = new GregorianCalendar();
        cal.setTimeInMillis(fechaActual.getTime());
        cal.add(Calendar.DATE, -30);
        dateDesde.setDate(new Date(cal.getTimeInMillis()));

        dmAlineaciones = new DefaultTableModel() {

            @Override
            public boolean isCellEditable(int row, int col) {
                return false;
            }

            @Override
            public Class getColumnClass(int c) {
                return String.class;
            }
        };
        dmAlineaciones.setDataVector(new Object[][]{}, new Object[]{"ID", "ALINEACIONES"});

        dmInspecciones = new DefaultTableModel() {

            @Override
            public boolean isCellEditable(int row, int col) {
                return false;
            }

            @Override
            public Class getColumnClass(int c) {
                return String.class;
            }
        };
        dmInspecciones.setDataVector(new Object[][]{}, new Object[]{"ID", "INSPECCIONES"});

        dmMediciones = new DefaultTableModel() {

            @Override
            public boolean isCellEditable(int row, int col) {
                return false;
            }

            @Override
            public Class getColumnClass(int c) {
                return String.class;
            }
        };
        dmMediciones.setDataVector(new Object[][]{}, new Object[]{"ID", "MEDICIONES"});

        dmMontajes = new DefaultTableModel() {

            @Override
            public boolean isCellEditable(int row, int col) {
                return false;
            }

            @Override
            public Class getColumnClass(int c) {
                return String.class;
            }
        };
        dmMontajes.setDataVector(new Object[][]{}, new Object[]{"ID", "MONTAJES"});
        inicializarTabla(tblAlineaciones, dmAlineaciones);
        inicializarTabla(tblInspecciones, dmInspecciones);
        inicializarTabla(tblMediciones, dmMediciones);
        inicializarTabla(tblMontajes, dmMontajes);
        ocultarColumnasCodigo();
        cargarAlineaciones(dateDesde.getDate(), dateHasta.getDate(), idVehiculo);
        VehiculosJpaController controladorVehiculos = new VehiculosJpaController(null);
        Vehiculos v = controladorVehiculos.findVehiculos(idVehiculo);
        if (v != null) {
            jTextField1.setText(v.getPlaca().toUpperCase());
            MarcasVehiculo marca = v.getIdMarca();
            if (marca != null) {
                jTextField2.setText(marca.getNombre());
            }
            jTextField5.setText(v.getCodBarras().toUpperCase());
            jTextField3.setText(v.getIdTipo().getNombre());
            jTextField4.setText(v.getKmActual() + "");
        }
        tblAlineaciones.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent evt) {
                if (evt.getClickCount() == 2) {
                    generarReporte(Constantes.REPORTE_ALINEACIONES);
                }
            }
        });
        tblInspecciones.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent evt) {
                if (evt.getClickCount() == 2) {
                    generarReporte(Constantes.REPORTE_INSPECCIONES);
                }
            }
        });
        tblMediciones.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent evt) {
                if (evt.getClickCount() == 2) {
                    generarReporte(Constantes.REPORTE_MEDICIONES);
                }
            }
        });
        tblMontajes.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent evt) {
                if (evt.getClickCount() == 2) {
                    generarReporte(Constantes.REPORTE_MONTAJES);
                }
            }
        });
        this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        this.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() {

            @Override
            public void internalFrameClosing(InternalFrameEvent e) {
                cerrar();
            }
        });
    }

    private void cerrar() {
        GUIUtil.maximizarTodasLasVentanas(this);
    }

    private void generarReporte(final int tipoReporte) {
        final DialogoCargando dlgLogin = new DialogoCargando(Principal.getInstance(), true);
        Thread hilo = new Thread() {

            @Override
            public void run() {
                EntityManager em = emf.createEntityManager();
                try {
                    ImpresionReportes hojaReporte = new ImpresionReportes(tipoReporte);
                    Principal.getInstance().getEscritorio().add(hojaReporte);
                    hojaReporte.setVisible(true);
                    hojaReporte.setMaximum(true);
                    switch (tipoReporte) {
                        case Constantes.REPORTE_ALINEACIONES:
                            int fila = tblAlineaciones.getSelectedRow();
                            if (fila >= 0) {
                                long idAlineacion = Long.parseLong(tblAlineaciones.getModel().getValueAt(fila, 0).toString());
                                Query q1 = em.createQuery("SELECT A FROM Alineaciones A WHERE A.id = :Id");
                                q1.setParameter("Id", idAlineacion);
                                Alineaciones alineacion = (Alineaciones) q1.getSingleResult();
                                hojaReporte.generarReporteAlineaciones(alineacion);
                            }
                            break;
                        case Constantes.REPORTE_INSPECCIONES:
                            fila = tblInspecciones.getSelectedRow();
                            if (fila >= 0) {
                                int idInspeccion = Integer.parseInt(tblInspecciones.getModel().getValueAt(fila, 0).toString());
                                Query q1 = em.createQuery("SELECT I FROM InspeccionEquipo I WHERE I.id = :Id AND I.estadoTransaccion = 1");
                                q1.setParameter("Id", idInspeccion);
                                InspeccionEquipo inspeccion = (InspeccionEquipo) q1.getSingleResult();
                                hojaReporte.generarReporteInspecciones(inspeccion);
                            }
                            break;
                        case Constantes.REPORTE_MEDICIONES:
                            fila = tblMediciones.getSelectedRow();
                            if (fila >= 0) {
                                int idMedicion = Integer.parseInt(tblMediciones.getModel().getValueAt(fila, 0).toString());
                                Query q1 = em.createQuery("SELECT C FROM ComprobacionBandaRodamientoPresion C WHERE C.id = :Id");
                                q1.setParameter("Id", idMedicion);
                                ComprobacionBandaRodamientoPresion medicion = (ComprobacionBandaRodamientoPresion) q1.getSingleResult();
                                hojaReporte.generarReporteBandaRodamiento(medicion);
                            }
                            break;
                        case Constantes.REPORTE_MONTAJES:
                            fila = tblMontajes.getSelectedRow();
                            if (fila >= 0) {
                                int idMontaje = Integer.parseInt(tblMontajes.getModel().getValueAt(fila, 0).toString());
                                Query q1 = em.createQuery("SELECT C FROM ControlCambioNeumatico C WHERE C.id = :Id");
                                q1.setParameter("Id", idMontaje);
                                ControlCambioNeumatico montaje = (ControlCambioNeumatico) q1.getSingleResult();
                                hojaReporte.generarReporteControlCambio(montaje);
                            }
                            break;
                    }
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(Principal.getInstance(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
                    e.printStackTrace();
                } finally {
                    dlgLogin.dispose();
                }
            }
        };
        hilo.start();
        dlgLogin.setVisible(true);
    }

    private void ocultarColumnasCodigo() {
        tblAlineaciones.getColumnModel().getColumn(0).setMinWidth(0);
        tblAlineaciones.getColumnModel().getColumn(0).setMaxWidth(0);
        tblAlineaciones.getColumnModel().getColumn(0).setPreferredWidth(0);

        tblInspecciones.getColumnModel().getColumn(0).setMinWidth(0);
        tblInspecciones.getColumnModel().getColumn(0).setMaxWidth(0);
        tblInspecciones.getColumnModel().getColumn(0).setPreferredWidth(0);

        tblMediciones.getColumnModel().getColumn(0).setMinWidth(0);
        tblMediciones.getColumnModel().getColumn(0).setMaxWidth(0);
        tblMediciones.getColumnModel().getColumn(0).setPreferredWidth(0);

        tblMontajes.getColumnModel().getColumn(0).setMinWidth(0);
        tblMontajes.getColumnModel().getColumn(0).setMaxWidth(0);
        tblMontajes.getColumnModel().getColumn(0).setPreferredWidth(0);
    }

    private void cargarAlineaciones(Date fechaIni, Date fechaFin, int idVehiculo) {
        Calendar cal = new GregorianCalendar();
        cal.setTimeInMillis(fechaFin.getTime());
        cal.add(Calendar.DATE, 1);
        fechaFin = new Date(cal.getTimeInMillis());
        EntityManager em = emf.createEntityManager();
        java.sql.Date sqlFechaIni = new java.sql.Date(fechaIni.getTime());
        java.sql.Date sqlFechaFin = new java.sql.Date(fechaFin.getTime());
        //sqlFechaFin
        ////////ALINEACIONES
        Query q1 = em.createQuery("SELECT A.id, A.fecha FROM Alineaciones A "
                + "WHERE A.fecha >= :fechaIni AND A.fecha < :fechaFin AND A.idVehiculos.id = :idVehiculo "
                + "AND A.anulado = :anulado "
                + "ORDER BY A.fecha DESC");
        q1.setParameter("idVehiculo", idVehiculo);
        q1.setParameter("fechaIni", sqlFechaIni);
        q1.setParameter("fechaFin", sqlFechaFin);
        q1.setParameter("anulado", false);
        List lista1 = q1.getResultList();
        ////////INSPECCIONES
        Query q2 = em.createQuery("SELECT I.id, I.fechaHoraSalida FROM InspeccionEquipo I "
                + "WHERE I.fechaHoraSalida >= :fechaIni AND I.fechaHoraSalida < :fechaFin AND "
                + "I.idVehiculoSalida.id = :idVehiculo AND I.estadoTransaccion = 1 "
                + "AND I.anulado = :anulado "
                + "ORDER BY I.fechaHoraSalida DESC");
        q2.setParameter("idVehiculo", idVehiculo);
        q2.setParameter("fechaIni", sqlFechaIni);
        q2.setParameter("fechaFin", sqlFechaFin);
        q2.setParameter("anulado", false);
        List lista2 = q2.getResultList();
        ////////MEDICIONES
        Query q3 = em.createQuery("SELECT C.id, C.fechaEjecucion FROM ComprobacionBandaRodamientoPresion C "
                + "WHERE C.fechaEjecucion >= :fechaIni AND C.fechaEjecucion < :fechaFin AND C.idVehiculo.id = :idVehiculo "
                + "AND C.anulado = :anulado "
                + "ORDER BY C.fechaEjecucion DESC");
        q3.setParameter("idVehiculo", idVehiculo);
        q3.setParameter("fechaIni", sqlFechaIni);
        q3.setParameter("fechaFin", sqlFechaFin);
        q3.setParameter("anulado", false);
        List lista3 = q3.getResultList();
        ////////MONTAJES
        Query q4 = em.createQuery("SELECT C.id, C.fecha FROM ControlCambioNeumatico C "
                + "WHERE C.fecha >= :fechaIni AND C.fecha < :fechaFin AND C.idVehiculo.id = :idVehiculo "
                + "ORDER BY C.fecha DESC");
        q4.setParameter("idVehiculo", idVehiculo);
        q4.setParameter("fechaIni", sqlFechaIni);
        q4.setParameter("fechaFin", sqlFechaFin);
        List lista4 = q4.getResultList();
        llenarTabla(lista1, dmAlineaciones);
        llenarTabla(lista2, dmInspecciones);
        llenarTabla(lista3, dmMediciones);
        llenarTabla(lista4, dmMontajes);
        ocultarColumnasCodigo();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblAlineaciones = new javax.swing.JTable();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblInspecciones = new javax.swing.JTable();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblMediciones = new javax.swing.JTable();
        jScrollPane4 = new javax.swing.JScrollPane();
        tblMontajes = new javax.swing.JTable();
        jPanel6 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jTextField5 = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jTextField4 = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        dateDesde = new com.toedter.calendar.JDateChooser();
        jLabel2 = new javax.swing.JLabel();
        dateHasta = new com.toedter.calendar.JDateChooser();
        jButton1 = new javax.swing.JButton();

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle(".:: Reportes de Unidad ::.");

        jPanel1.setLayout(new java.awt.GridLayout(1, 4, 4, 0));

        tblAlineaciones.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblAlineaciones.setFillsViewportHeight(true);
        tblAlineaciones.setRowHeight(22);
        tblAlineaciones.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblAlineaciones.setShowHorizontalLines(false);
        tblAlineaciones.setShowVerticalLines(false);
        jScrollPane1.setViewportView(tblAlineaciones);

        jPanel1.add(jScrollPane1);

        tblInspecciones.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblInspecciones.setFillsViewportHeight(true);
        tblInspecciones.setRowHeight(22);
        tblInspecciones.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblInspecciones.setShowHorizontalLines(false);
        tblInspecciones.setShowVerticalLines(false);
        jScrollPane2.setViewportView(tblInspecciones);

        jPanel1.add(jScrollPane2);

        tblMediciones.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblMediciones.setFillsViewportHeight(true);
        tblMediciones.setRowHeight(22);
        tblMediciones.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblMediciones.setShowHorizontalLines(false);
        tblMediciones.setShowVerticalLines(false);
        jScrollPane3.setViewportView(tblMediciones);

        jPanel1.add(jScrollPane3);

        tblMontajes.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblMontajes.setFillsViewportHeight(true);
        tblMontajes.setRowHeight(22);
        tblMontajes.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tblMontajes.setShowHorizontalLines(false);
        tblMontajes.setShowVerticalLines(false);
        jScrollPane4.setViewportView(tblMontajes);

        jPanel1.add(jScrollPane4);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Parámetros de búsqueda"));
        jPanel6.setLayout(new java.awt.GridLayout(2, 1));

        jPanel2.setMinimumSize(new java.awt.Dimension(283, 20));
        jPanel2.setPreferredSize(new java.awt.Dimension(754, 20));
        jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));

        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel3.setText("Placa:");
        jLabel3.setPreferredSize(new java.awt.Dimension(40, 20));
        jPanel2.add(jLabel3);

        jTextField1.setEditable(false);
        jTextField1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jTextField1.setPreferredSize(new java.awt.Dimension(120, 20));
        jPanel2.add(jTextField1);

        jLabel7.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel7.setText("Código:");
        jPanel2.add(jLabel7);

        jTextField5.setEditable(false);
        jTextField5.setMinimumSize(new java.awt.Dimension(70, 20));
        jTextField5.setPreferredSize(new java.awt.Dimension(70, 20));
        jPanel2.add(jTextField5);

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel4.setText("Marca:");
        jPanel2.add(jLabel4);

        jTextField2.setEditable(false);
        jTextField2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jTextField2.setPreferredSize(new java.awt.Dimension(120, 20));
        jPanel2.add(jTextField2);

        jLabel5.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel5.setText("Modelo:");
        jPanel2.add(jLabel5);

        jTextField3.setEditable(false);
        jTextField3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jTextField3.setPreferredSize(new java.awt.Dimension(120, 20));
        jPanel2.add(jTextField3);

        jLabel6.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel6.setText("Kilometraje actual:");
        jPanel2.add(jLabel6);

        jTextField4.setEditable(false);
        jTextField4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jTextField4.setPreferredSize(new java.awt.Dimension(120, 20));
        jPanel2.add(jTextField4);

        jPanel6.add(jPanel2);

        jPanel3.setPreferredSize(new java.awt.Dimension(407, 24));
        jPanel3.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 5, 0));

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel1.setText("Desde:");
        jLabel1.setPreferredSize(new java.awt.Dimension(40, 20));
        jPanel3.add(jLabel1);

        dateDesde.setDateFormatString("dd/MM/yyyy");
        dateDesde.setMaxSelectableDate(new Date());
        dateDesde.setPreferredSize(new java.awt.Dimension(120, 20));
        dateDesde.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                dateDesdePropertyChange(evt);
            }
        });
        jPanel3.add(dateDesde);

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel2.setText("Hasta:");
        jLabel2.setMaximumSize(new java.awt.Dimension(38, 14));
        jLabel2.setMinimumSize(new java.awt.Dimension(38, 14));
        jLabel2.setPreferredSize(new java.awt.Dimension(38, 14));
        jPanel3.add(jLabel2);

        dateHasta.setDateFormatString("dd/MM/yyyy");
        dateHasta.setMaxSelectableDate(new Date());
        dateHasta.setPreferredSize(new java.awt.Dimension(120, 20));
        jPanel3.add(dateHasta);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/buscar.png"))); // NOI18N
        jButton1.setToolTipText("Buscar");
        jButton1.setBorder(null);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel3.add(jButton1);

        jPanel6.add(jPanel3);

        getContentPane().add(jPanel6, java.awt.BorderLayout.PAGE_START);

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
    cargarAlineaciones(dateDesde.getDate(), dateHasta.getDate(), idVehiculo);
}//GEN-LAST:event_jButton1ActionPerformed

private void dateDesdePropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_dateDesdePropertyChange
// TODO add your handling code here:
    if (evt.getPropertyName().compareTo("date") == 0) {
        dateHasta.setMinSelectableDate(dateDesde.getDate());
    }
}//GEN-LAST:event_dateDesdePropertyChange
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private com.toedter.calendar.JDateChooser dateDesde;
    private com.toedter.calendar.JDateChooser dateHasta;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTable tblAlineaciones;
    private javax.swing.JTable tblInspecciones;
    private javax.swing.JTable tblMediciones;
    private javax.swing.JTable tblMontajes;
    // End of variables declaration//GEN-END:variables

    private void llenarTabla(List lista, DefaultTableModel mdlTabla) {
        Iterator results = lista.iterator();
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd/MM/yyyy");
        mdlTabla.setRowCount(0);
        while (results.hasNext()) {
            Object[] tupla = (Object[]) results.next();
            tupla[1] = formatoDeFecha.format((Date) tupla[1]);
            mdlTabla.addRow(tupla);
        }
    }

    private void inicializarTabla(JTable tabla, DefaultTableModel modelo) {
        TableSorter tableSorter = new TableSorter(modelo, tabla.getTableHeader());
        tabla.setModel(tableSorter);
        TableFilterHeader filterHeader = new TableFilterHeader();
        filterHeader.setTable(tabla);
        RenderizadorTablaReportes render = new RenderizadorTablaReportes();
        tabla.setDefaultRenderer(String.class, render);
//        cargarAlineaciones(dateDesde.getDate(), dateHasta.getDate(), idVehiculo);
        tabla.getTableHeader().setReorderingAllowed(false);
    }
}
